package com.example.asus.recyclerview;

/**为RecyclerView准备一个适配器*/

import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.List;

/**新建RecyclerViewAdapter类，让这个适配器继承自RecyclerView.Adapter，
 * 并将泛型指定为 RecyclerView.Adapter.ViewHolder*/
public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerViewAdapter.ViewHolder>{
    private List<Imagetext> mImagetextList;

    /**ViewHolder是我们在RecyclerViewAdapter中定义的一个内部类
     * ViewHolder 要继承自RecyclerView.ViewHolder*/
    static class ViewHolder extends RecyclerView.ViewHolder{
        ImageView imageView;
        TextView textView;

        /**ViewHolder的构造函数中要传入一个View参数，这个参数通常就是RecyclerView子项的最外层布局
         * 那么我们就可以通过findViewById（）方法来获取到布局中的ImageView和TextView的实例了*/
        public ViewHolder(View view){
            super(view);
            imageView=(ImageView)view.findViewById ( R.id.image );
            textView=(TextView)view.findViewById ( R.id.text );
        }
    }

    /**RecyclerViewAdapter中也有一个构造函数，这个方法用于把要展示的数据源传进来，
     * 并赋值给一个全局变量mImagetextList*/
    public RecyclerViewAdapter(List<Imagetext>imagetextList){
        mImagetextList=imagetextList;
    }

    /**由于RecyclerViewAdapter是继承自RecyclerView.Adapter的，
     * 那么就必须重写onCreateViewHolder（）、onBindViewHolder（）和getItemCount（）这3个方法。*/

    /**onCreate-ViewHolder（）方法是用于创建ViewHolder实例的，
     * 我们在这个方法中将recyclerview_item布局加载进来，
     * 然后创建一个ViewHolder实例，并把加载出来的布局传入到构造函数当中，最后将ViewHolder的实例返回*/
    //创建新View，被LayoutManager所调用
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType){
        View view=LayoutInflater.from ( parent.getContext () )
                .inflate ( R.layout.recyclerview_item,parent,false );
        ViewHolder holder=new ViewHolder ( view );
        return holder;
    }

    /**onBindViewHolder（）方法是用于对RecyclerView子项的数据进行赋值的，
     * 会在每个子项被滚动到屏幕内的时候执行，
     * 这里我们通过position参数得到当前项的Imagetext实例，
     * 然后再将数据设置到ViewHolder的ImageView和TextView当中即可*/
    public void onBindViewHolder(ViewHolder holder,int position){
        Imagetext imagetext=mImagetextList.get ( position );
        holder.imageView.setImageResource ( imagetext.getImageId () );
        holder.textView.setText ( imagetext.getText () );
    }

    /**getItemCount（）方法就非常简单了，
     * 它用于告诉RecyclerView一共有多少子项，直接返回数据源的长度就可以了。*/
    public int getItemCount(){
        return mImagetextList.size ();
    }
}
